package com.snail.common.dyd;

import com.snail.common.dyd.bean.DataBaseType;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DataBaseTypeRep {

    private static List<DataBaseType> dataBaseTypeList = new ArrayList<>();
    private static Map<Integer, DataBaseType> dataBaseTypeMap = new HashMap<>();

    static {
        dataBaseTypeList.add(new DataBaseType("MySQL5.5", 1, "mysql"));
        dataBaseTypeList.add(new DataBaseType("Oracle", 2, "oracle"));
        dataBaseTypeList.add(new DataBaseType("SQLServer", 3, "sqlserver"));
        dataBaseTypeList.add(new DataBaseType("MYSQL5.7+", 4, "mysql"));
        dataBaseTypeList.add(new DataBaseType("MariaDB", 5, "mariadb"));
        dataBaseTypeList.add(new DataBaseType("PostgreSQL", 6, "postgresql"));
        dataBaseTypeList.add(new DataBaseType("达梦", 7, "dameng"));
        dataBaseTypeList.add(new DataBaseType("人大金仓", 8, "ruanqing"));
        dataBaseTypeList.add(new DataBaseType("神通", 9, "shengtong"));
        dataBaseTypeList.add(new DataBaseType("SQLite", 10, "sqlite"));
        dataBaseTypeList.add(new DataBaseType("DB2", 11, "db2"));
        dataBaseTypeList.add(new DataBaseType("Hsqldb", 12, "hsqldb"));
        dataBaseTypeList.add(new DataBaseType("Derby", 13, "derby"));
        dataBaseTypeList.add(new DataBaseType("H2", 14, "h2"));
        dataBaseTypeList.add(new DataBaseType("其他数据库", 15, "other"));

        dataBaseTypeList.stream().forEach(dataBaseType -> dataBaseTypeMap.put(dataBaseType.getCode(), dataBaseType));
    }

    public static void register(String name, int code, String typeId){
        if (dataBaseTypeMap.containsKey(code)){
            return;
        }
        DataBaseType dataBaseType = new DataBaseType(name, code, typeId);
        dataBaseTypeList.add(dataBaseType);
        dataBaseTypeMap.put(code, dataBaseType);
    }

    public static DataBaseType getDataBaseType(Integer code){
        return dataBaseTypeMap.get(code);
    }
}

